iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
DevOps

玩耍開源k8s30天系列 第 22

day22 : TIDB on K8S (中)

  • 分享至 

  • xImage
  •  

今天就來使用TIUP佈建TIDB看看吧,因為我環境會如同之前一樣使用GCP,所以今天也一樣會透過terraform和ansible把相關的設定一口氣完成。

首先透過terraform的方法讓gcp自動建出一台管理機器、一定數量的TIDB、3台PD、一定數量的TIKV,腳本大致上如下

provider "google" {
  credentials = “service account key“
  project    = “project id”
  region     = "asia-east1"
}

module "create_gce1" {
  source        = "./gce-db"
  instance_name = “ithome-tidb-01”
  instance_zone = "asia-east1-b"
}

module "create_gce2” {
  source        = "./gce-pd"
  instance_name = “ithome-pd-01”
  instance_zone = "asia-east1-b"
}

以此類推寫好provider.tf檔案,以及各自元件所需要的的main.tf規格
https://ithelp.ithome.com.tw/upload/images/20210922/20139661qZ6zCHwtcq.png
這種分法原因在於每個元件所需要的規格較為不同,適當地調配空間和memory會能得到較佳的使用體驗,接著透過ansible做一些底層調整(為方便做事不管資安的做法)

1.關閉防火牆
2.關閉selinux
3.vi /etc/sysctl.conf
add

vm.swappiness = 0
fs.file-max = 1000000
net.core.somaxconn = 32768
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_syncookies = 0
vm.overcommit_memory = 1
vm.swappiness = 0

sysctl -p 生效
  1. vi /etc/security/limits.conf
    add
 root           soft    nofile          1000000
 root           hard    nofile          1000000
 root           soft    stack          32768
 root           hard    stack          32768

這邊建議是TIDB運行的帳號

5.配置/tidb-data空間(並調配nodelalloc,noatime)

6.配置底層設定
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
這代表有開

cat /sys/block/sd[bc]/queue/scheduler

noop [deadline] cfq
noop [deadline] cfq

這代表有用deadline

cpupower frequency-info --policy
analyzing CPU 0:
current policy: frequency should be within 1.20 GHz and 3.10 GHz.
              The governor "powersave" may decide which speed to use within this range.

這代表有用powersave

mkdir /etc/tuned/balanced-tidb-optimal/
vi /etc/tuned/balanced-tidb-optimal/tuned.conf
[main]
include=balanced

[cpu]
governor=performance

[vm]
transparent_hugepages=never

[disk]
devices_udev_regex=(ID_SERIAL=36d0946606d79f90025f3e09a0c1fc035)|(ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81)
elevator=noop

tuned-adm profile balanced-tidb-optimal

7.不是用gcp環境的話建議關閉swap,gcp幫我關了

以上作業,如果不熟悉ansible module其實也都可以用ansible shell module完成,或是極端一點寫sh丟到每一台上執行。

而管理主機不需要上述的作業,不過需要放置tiup的執行工具(https://tiup-mirrors.pingcap.com/tiup-Linux-amd64.tar.gz),以及設定類似yaml檔案的tidb配置文件如下。


global:
  user: "root"
  ssh_port: 22
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-data"
  arch: "amd64"
server_configs: 
  pd:
    replication.enable-placement-rules: true
monitored:
  node_exporter_port: 9100
  blackbox_exporter_port: 9115
pd_servers:
  - host: PD1_IP
  - host: PD2_IP
  - host: PD3_IP
tidb_servers:
  - host: TIDB1_IP
  - host: TIDB2_IP
  - host: TIDB3_IP
tikv_servers:
  - host: TIKV1_IP
  - host: TIKV2_IP
  - host: TIKV3_IP
monitoring_servers:
  - host: manager_server_IP
grafana_servers:
  - host: manager_server_IP
alertmanager_servers:
  - host: manager_server_IP
如果有想用flash和cdc功能的話
tiflash_servers:
  - host: TIFLash1_IP
    data_dir: /tidb-data/tiflash-9000
    deploy_dir: /tidb-deploy/tiflash-9000
  - host: TIFlash2_IP
    data_dir: /tidb-data/tiflash-9000
    deploy_dir: /tidb-deploy/tiflash-9000
cdc_servers:
  - host: TICDC1_IP
  - host: TICDC2_IP
  - host: TICDC3_IP

有發現嗎,這一份文件,是可以用template的功能搭配ansible for迴圈自動產出的唷。

完成基礎設定後,對管理主機下check的指令檢查環境狀態,因為會需要看狀況,我是用手動執行的
tiup cluster check ./topology.yaml --user root
這一份檢查是基於官方文件所做的檢查,所以有一些沒有符合的,例如時間同步之類的設定,如果有取代方案的話是可以忽略不符合的。
在檢查完成並且修正一些檢查中發現需要修正的問題後就可以進行安裝了
tiup cluster deploy ithome-tidb v5.1.0 ./topology.yaml --user root

集群安裝完成後
可以在管理機上用指令啟停主機

tiup cluster start ithome-tidb
tiup cluster stop ithome-tidb

也可以用

tiup cluster list
tiup cluster display ithome-tidb

去看一些叢集狀況

tidb也會藉由tiup去建出grafana圖表,可以從剛剛的配置文件中設定,依據我的配置文件,就會是管理主機上會多出grafana的port,如果想要的話也可以將datasources整到之前設計的grafana上去收攏唷。
https://ithelp.ithome.com.tw/upload/images/20210922/20139661oDt0udJK3U.png

除了grafana可以圖表化的觀看使用狀況以外,從PD介面也可以登入管理者介面查看一些SQL使用狀況(指令查詢多久、最常使用的語法)之類的。
https://ithelp.ithome.com.tw/upload/images/20210922/20139661WjqTbNN8Ce.png
https://ithelp.ithome.com.tw/upload/images/20210922/20139661ACLr7SvXx3.png
因為TIDB支援mysql語法,所以使用上可以直接用mysql的指令去use database,select table,寫資料讀資料看看囉。


上一篇
day21 : TIDB on K8S (上)
下一篇
day23 : TIDB on K8S (下)
系列文
玩耍開源k8s30天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言